import CryptoJS from 'crypto-js';

/** 【文件说明】：加密解密服务类，提供数据加密与解密的方法。
 * 
 *  【使用例子】：

    import { DateTimeUtils } from '@/utils/cryptoservice';
    // 加密
    encryptedData.value = cryptoService.encrypt(originalData.value);
    // 解密
    decryptedData.value = cryptoService.decrypt(encryptedData.value) || '';
 */
class CryptoService {
  private static readonly SECRET_KEY = 'YourSecretKey123'; // 请确保这是一个安全的密钥

  /**
   * 对数据进行 AES 加密。
   * @param data - 要加密的数据。
   * @returns 加密后的数据（Base64 编码）。
   */
  public encrypt(data: string): string {
    const encrypted = CryptoJS.AES.encrypt(data, CryptoService.SECRET_KEY).toString();
    return encrypted;
  }

  /**
   * 对数据进行 AES 解密。
   * @param encryptedData - 加密后的数据（Base64 编码）。
   * @returns 解密后的原始数据。
   */
  public decrypt(encryptedData: string): string | null {
    try {
      const bytes = CryptoJS.AES.decrypt(encryptedData, CryptoService.SECRET_KEY);
      const originalText = bytes.toString(CryptoJS.enc.Utf8);
      return originalText;
    } catch (error) {
      console.error('Error decrypting data:', error);
      return null;
    }
  }
}

// 导出单例实例
const cryptoService = new CryptoService();
export default cryptoService;